package brickdestroyer.math;

/**
 * Objects must implements this interface in order
 * to be considered as movable by the collision manager.
 *
 * @author Momchil Atanasov
 */
public interface DynamicShape2D {

    /**
     * This method returns the speed of the current
     * shape in the form of a vector.
     * <p>Shapes are required to return their true
     * speed vector instance and not a copy of it.
     * @return vector instance representing the
     * speed of the object.
     */
    public Vector2D getSpeed();

    /**
     * This method determines the movability of a shape.
     * <p>The value returned should be in the range of
     * [0.0f..1.0f] where 0.0f is an object with infinite
     * mass (i.e. when this object moves and hits another object
     * with a movability different than 0.0f, then the other
     * object will be displaced and not this one).
     * @return a movability value in the range [0.0f, 1.0f]
     */
    public float getMovability();

}
